package cn.zclong.service.impl;

import java.util.List;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;

import cn.zclong.exception.CustomException;
import cn.zclong.mapper.ItemsMapper;
import cn.zclong.mapper.ItemsMapperCustom;
import cn.zclong.pojo.Items;
import cn.zclong.pojo.ItemsCustom;
import cn.zclong.pojo.ItemsQueryVo;
import cn.zclong.service.ItemsService;


public class ItemsServiceImpl implements ItemsService{
	
	@Autowired
	private ItemsMapperCustom itemsMapperCustom;
	
	@Autowired
	private ItemsMapper itemsMapper;
	
	public List<ItemsCustom> findItemsList(ItemsQueryVo itemsQueryVo) throws Exception {
		//通过itemsMapperCustom查询数据库
		return itemsMapperCustom.findItemsList(itemsQueryVo);
	}

	/**
	 * 根据主键查询商品
	 */
	public ItemsCustom findItemById(Integer id) throws Exception {
		//调用根据主键查询商品的方法
		Items items = itemsMapper.selectByPrimaryKey(id);
		
		//处理异常
		if(items == null) {
			throw new CustomException("修改的商品信息不存在！");
		}
		
		//中间对商品信息进行业务处理
		//。。。。
		//返回ItemsCustom
		ItemsCustom itemsCustom = null;
		//将items的属性值拷贝到itemsCustom
		if(items != null) {
			itemsCustom = new ItemsCustom();
			BeanUtils.copyProperties(items, itemsCustom);
		}
		
		return itemsCustom;
	}

	/**
	 * 根据id更新items表
	 */
	public void updateItems(Integer id, ItemsCustom itemsCustom) throws Exception {
		//添加业务校验，通常在service接口对关键参数进行校验
		//校验id是否为空，如果为空则抛出异常
		
		//更新商品信息使用updateByPrimaryKeyWithBLOBs根据id更新Items表中的所有字段，包括大文本类型字段
		//updateByPrimaryKeyWithBLOBs要求必须转入id
		itemsCustom.setId(id);
		itemsMapper.updateByPrimaryKeyWithBLOBs(itemsCustom);
	}
}
